package main

/*
在一个 平衡字符串 中，'L' 和 'R' 字符的数量是相同的。

给你一个平衡字符串s，请你将它分割成尽可能多的平衡字符串。

注意：分割得到的每个字符串都必须是平衡字符串。

返回可以通过分割得到的平衡字符串的 最大数量 。

*/

func main() {
	print(balancedStringSplit("RLRRLLRLRL"))
}

/**
 *	balancedStringSplit
 *	@Description: 栈 先进后出
 *	@param s string
 *	@return int
 */
func balancedStringSplit(s string) int {
	stack := map[int]byte{}
	end := -1
	count := 0
	for i, n := 0, len(s); i < n; i++ {
		if end == -1 || stack[end] == s[i] {
			end++
			stack[end] = s[i]
		} else {
			end--
			if end == -1 {
				count++
			}
		}
	}
	return count
}
